package practice_2025_9.practice_9_6;


import practice_2025_9.practice_9_5.ListNode;

import java.util.PriorityQueue;

class Solution {
    /**
     * 找到最近的人
     * @param x
     * @param y
     * @param z
     * @return
     */
    public int findClosest(int x, int y, int z) {
        // 数轴上三个人的位置
        // z: 不动, x 和 y 向 z 移动，判断谁先到达
        int disA = Math.abs(z - x);
        int disB = Math.abs(z - y);
        if (disA < disB) {
            return 1;
        } else if (disA > disB) {
            return 2;
        } else {
            return 0;
        }
    }

    /**
     * 排序链表
     * @param head
     * @return
     */
    public ListNode sortList(ListNode head) {
        // 将链表按升序排列 -> 小根堆
        PriorityQueue<ListNode> queue = new PriorityQueue<>((v1, v2) -> v1.val - v2.val);
        ListNode cur = head;
        while(cur != null) {
            queue.add(cur);
            cur = cur.next;
        }
        ListNode newHead = new ListNode();
        cur = newHead;
        while(!queue.isEmpty()) {
            ListNode node = queue.poll();
            cur.next = node;
            cur = cur.next;
        }
        cur.next = null;
        return newHead.next;
    }
}